#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
#define int long long


//int sx, sy, tx, ty;
//int px, py;
//const int low = -100000000;
//const int high = 100000000;
//
//void solve() {
//	cin >> sx >> sy;
//	cin >> tx >> ty;
//	cin >> px >> py;
//	if (py >= max(sy, ty)) {
//		cout << 2 << '\n';
//		cout << sx << ' ' << low << '\n';
//		cout << tx << ' ' << low << '\n';
//		return;
//	}
//	else if (px <= min(sx, sy)) {
//		cout << 2 << '\n';
//		cout << high << ' ' << sy << '\n';
//		cout << high << ' ' << ty << '\n';
//		return;
//	}
//	else if (py <= min(sy, ty)) {
//		cout << 2 << '\n';
//		cout << sx << ' ' << high << '\n';
//		cout << tx << ' ' << high << '\n';
//		return;
//	}
//	else if (px >= max(sx, tx)) {
//		cout << 2 << '\n';
//		cout << low << ' ' << sy << '\n';
//		cout << low << ' ' << ty << '\n';
//		return;
//	}
//	else {
//		cout << 2 << '\n';
//		cout << low << ' ' << sy << '\n';
//		cout << low << ' ' << ty << '\n';
//		return;
//	}
//}
//
//signed main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	solve();
//	return 0;
//}
//#include <iostream>
//#include <string>
//using namespace std;
//#define int long long
//
//string s, d, m;
//
//int check() {
//	int res = 0, base = 1;
//	while (d.size() != 0) {
//		if (d.back() == '1') res += base;
//		base *= 2;
//		d.resize(d.size() - 1);
//		if (res >= 20000||base>=20000)
//			return 0;
//	}
//	return res;
//}
//
//string add(string m, string s) {
//	int i = m.size() - 1, j = s.size() - 1;
//	int carry = 0;
//	string ans;
//	while (i >=0 || j >= 0) {
//		int val1 = i >= 0 ? m[i]-'0' : 0;
//		int val2 = j >= 0 ? s[j]-'0' : 0;
//		int tmp = val1 + val2 + carry;
//		if (tmp <= 1) {
//			ans += (tmp + '0');
//			carry = 0;
//		}
//		else {
//			ans += (tmp - 2 + '0');
//			carry = 1;
//		}
//		i--;
//		j--;
//	}
//	if (carry)
//		ans += '1';
//	reverse(ans.begin(), ans.end());
//	return ans;
//}
//void solve() {
//
//	cin >> s >> d >> m;
//	int res = check();
//	int cnt = res;
//	if (res == 0) {
//		string day = "";
//		while (m.size() != 0) {
//			day = add(day, "1");
//			m.resize(m.size() - 1);
//		}
//		cout << day << '\n';
//		return;
//	}
//
//	if (res <= m.size() && res <= s.size()) {
//		cout << "Infinite money!\n";
//		return;
//	}
//	string day="";
//	while (m.size() != 0) {
//		cnt--;
//		m.resize(m.size() - 1);
//		if (cnt == 0) {
//			m = add(m, s);
//			if (res <= m.size() && res <= s.size()) {
//				cout << "Infinite money!\n";
//				return;
//			}
//			cnt = res;
//		}
//		day = add(day, "1");
//	}
//	cout << day << '\n';
//	return;
//}
//
//signed main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	solve();
//	return 0;
//}


//int N, K;
//int a[150005], b[150005];
//
//void solve() {
//	cin >> N >> K;
//    int size = N * K;
//
//
//    for (int i = 0; i < size; ++i) cin >> a[i];
//    for (int i = 0; i < size; ++i) cin >> b[i];
//    unordered_map<int, vector<int>> pos;
//    for (int i = 0; i < size; ++i)
//        pos[b[i]].push_back(i);
//    unordered_map<int, int> ptrs;
//    vector<int> P;
//    for (int num : a) {
//        auto it = pos.find(num);
//        if (it != pos.end()) {
//            vector<int>& indices = it->second;
//            int& ptr = ptrs[num];
//            if (ptr < indices.size()) {
//                P.push_back(indices[ptr]);
//                ptr++;
//            }
//        }
//    }
//    vector<int> lis;
//    for (int x : P) {
//        auto it = lower_bound(lis.begin(), lis.end(), x);
//        if (it == lis.end()) lis.push_back(x);
//        else *it = x;
//    }
//    cout << lis.size();
//
//}
//
//signed main() {
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	solve();
//
//	return 0;
//}

//#include <iostream>
//#include <vector>
//#include <unordered_map>
//#include <algorithm>
//using namespace std;
//
//signed main() {
//    int N, K;
//    cin >> N >> K;
//    int size = N * K;
//    vector<int> A(size);
//    vector<int> B(size);
//
//    for (int i = 0; i < size; ++i) cin >> A[i];
//    for (int i = 0; i < size; ++i) cin >> B[i];
//
//    unordered_map<int, vector<int>> pos;
//    for (int i = 0; i < size; ++i)
//        pos[B[i]].push_back(i);
//
//    unordered_map<int, int> ptrs;
//    vector<int> P;
//
//    for (int num : A) {
//        auto it = pos.find(num);
//        if (it != pos.end()) {
//            vector<int>& indices = it->second;
//            int& ptr = ptrs[num];
//            if (ptr < indices.size()) {
//                P.push_back(indices[ptr]);
//                ptr++;
//            }
//        }
//    }
//
//    vector<int> lis;
//    for (int x : P) {
//        auto it = lower_bound(lis.begin(), lis.end(), x);
//        if (it == lis.end()) lis.push_back(x);
//        else *it = x;
//    }
//
//    cout << lis.size();
//    return 0;
//}
int n, k;
vector<int> e[500005];
int a[500005], b[500005];
int s[500005];

void xg(int jl, int jr, int l, int r, int rt) {
	if (jl==jr&&) {
		s[rt] = y;
	}
}

void solve() {
	cin >> n >> k;
	for (int i = 1; i <= n * k; i++)cin >> a[i];
	for (int i = 1; i <= n; i++) {
		cin >> b[i];
		e[b[i]].push_back(i);
	}

	for (int i = 1; i <= n * k; i++) {
		for (int j = e[a[i]].size() - 1; j >= 0; j--) {
			if(j==1) 
		}
	}

}

signed main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();

	return 0;
}